package com.jiyinit.web.core.business.dao;

import com.jiyinit.core.framework.base.paging.PagingResult;
import com.jiyinit.core.framework.dao.mybatis.base.MybatisDaoContext;
import com.jiyinit.core.framework.dao.mybatis.paginator.domain.PageBounds;
import com.jiyinit.web.core.business.dto.DailyLogRequest;
import com.jiyinit.web.core.business.dto.TaskRequest;
import com.jiyinit.web.core.business.dto.UserTaskRequest;
import com.jiyinit.web.core.business.entity.TabCoreTask;
import com.jiyinit.web.core.business.entity.TabCoreTaskMessage;
import com.jiyinit.web.core.business.entity.TabCoreUserEntity;
import com.jiyinit.web.core.business.entity.TabCoreUserTask;
import com.jiyinit.web.core.business.vo.TaskInfoVo;
import com.jiyinit.web.core.business.vo.UserTaskVo;
import com.jiyinit.web.core.common.util.UserUtil;

import org.apache.ibatis.jdbc.SQL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p></p>
 * <p/>
 * <PRE>
 * <BR>	修改记录
 * <BR>-----------------------------------------------
 * <BR>	修改日期			修改人			修改内容
 * </PRE>
 *
 * @author wuyuefeng
 * @version 1.0
 * @date 2017/4/11 17:51
 * @since 1.0
 */
@Repository("core.tabCoreUserTaskDao")
public class TabCoreUserTaskDao {

    /**
     * 日志对象
     */
    private static Logger logger = LoggerFactory.getLogger(TabCoreUserTaskDao.class);

    private String SQLID = "core.tabCoreUserTaskDao.";

    @Autowired
    @Qualifier("core.MybatisDaoContext")
    private MybatisDaoContext mybatisDaoContext;

    public List<UserTaskVo> findUsers(Integer userId){
        return mybatisDaoContext.findAll(SQLID+"findUsers",UserTaskVo.class,userId);
    }

    public int pushSwitch(DailyLogRequest request){
        HashMap<String,Object> params = new HashMap<>();
        params.put("taskId",request.getId());
        params.put("userId",request.getUserId());
        params.put("isPush",request.getIsPush());
        return mybatisDaoContext.update(SQLID+"pushSwitch",params);
    }

    public int batchInsert(List<TabCoreUserTask> list){
        return mybatisDaoContext.batchSave(SQLID+"insertSelective",list);
    }

    public int batchDelete(List<TabCoreUserTask> list){
        return mybatisDaoContext.batchUpdate(SQLID+"batchDelete",list);
    }

   
	/*
	 * 条件查询
	 */
    public PagingResult<UserTaskVo> findUserTasksByTaskId(UserTaskRequest userTaskRequest){
        PageBounds pageBounds = new PageBounds();
        pageBounds.setLimit(userTaskRequest.getLimit());
        pageBounds.setPage(userTaskRequest.getPage());
        return mybatisDaoContext.findForPage(SQLID + "findUserTasksByTaskId", UserTaskVo.class, userTaskRequest.toMap(), pageBounds);
    }
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年4月25日 下午2:44:24
         * @param 
         * @return
     */
    public int addUserTask(TabCoreUserTask tabCoreUserTask) {
        return mybatisDaoContext.save(SQLID + "insertSelective", tabCoreUserTask);
    }
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年5月3日 下午6:07:22
         * @param 
         * @return
     */
    public int updateUserTask(TabCoreUserTask tabCoreUserTask) {
        return mybatisDaoContext.update(SQLID + "updateByPrimaryKey", tabCoreUserTask);
    }
    public int delete(TabCoreUserTask tabCoreUserTask){
        return mybatisDaoContext.update(SQLID+"delete",tabCoreUserTask);
    }
    
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年4月25日 下午5:51:19
         * @param 
         * @return
     */
    public TabCoreTask findTaskByTaskId(Integer taskId){
        return mybatisDaoContext.findOne(SQLID + "findUserTasksByTaskId", TabCoreTask.class, taskId);
    }

    public List<TabCoreUserTask> getUserByTaskId(Integer taskId){
    return mybatisDaoContext.findAll(SQLID +"getUserByTaskId",TabCoreUserTask.class, taskId);
    }
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年5月4日 上午9:04:37
         * @param 
         * @return
     */
    public UserTaskVo findUserTaskById(Integer userTaskId){
        return mybatisDaoContext.findOne(SQLID + "selectByPrimaryKey", UserTaskVo.class, userTaskId);
    }
    
    
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年4月26日 上午11:01:52
         * @param 
         * @return
     */
    public int updateTaskById(TabCoreTask tabCoreTask) {
        return mybatisDaoContext.update(SQLID + "updateByPrimaryKey", tabCoreTask);
    }
    
    
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年4月26日 下午2:48:20
         * @param 
         * @return
     */
    
    public int deleteTaskByIds(Integer[] taskIds){
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("taskIds", taskIds);
        return mybatisDaoContext.update(SQLID + "deleteTaskByIds", map);
    }
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年5月5日 下午4:19:22
         * @param 
         * @return
     */
    public List<UserTaskVo> findUserTasksByTaskId(Integer[] taskIds){
    	Map<String, Object> map = new HashMap<String, Object>();
        map.put("taskIds", taskIds);
    	return mybatisDaoContext.findAll(SQLID + "findUserTasksById", map);
    }
    /**
     * 
         * 说明
         * @author wuyuefeng
         * @create 2017年5月11日 下午3:34:27
         * @param 
         * @return
     */
    public List<UserTaskVo> findAllByTaskId(UserTaskRequest userTaskRequest){
    	return mybatisDaoContext.findAll(SQLID + "findUserTasksByTaskId", UserTaskVo.class, userTaskRequest.toMap());
    }
    
    /**
     * 
         * 说明-查询任务分配名册
         * @author wuyuefeng
         * @create 2017年5月22日 上午10:12:06
         * @param 
         * @return
     */
    public List<UserTaskVo> findUserRolls(Integer userId){
    	return mybatisDaoContext.findAll(SQLID + "findUserRolls", UserTaskVo.class,userId);
    }

     /**
      * 更新用户参与任务的是否阅读过任务的标识为1--is_read_task
      * @author liuzongguang
      * @create 2018/7/27 15:54
      * @param
      * @return
      */
     
    public int updateIsReadTaskStatus(UserTaskRequest request){
        HashMap<String,Object> params = new HashMap<>();
        params.put("taskId",request.getTaskId());
        params.put("userId",request.getUserId());
        return mybatisDaoContext.update(SQLID+"updateIsReadTaskStatus",params);
    }

    public int insertUserTimed(TabCoreTask coreTask){
       /* HashMap<String,Object> params = new HashMap<>();
        params.put("core",parentOrgId);*/
        return mybatisDaoContext.save(SQLID + "insertUserTimed", coreTask);
    }
}
